package com.cskaoyan.javase.method._1basic;

/**
 * 方法的语法:
 * [修饰符列表] 返回值类型 方法名(形参列表){
 *     // 方法体
 * }
 * 方法的使用细节2:
 *      问题: 方法的形参会告诉方法的调用者,调用方法时需要传入什么类型的参数(实参)
 *          那么,实参的数据类型,必须和形参的数据类型完全一致吗?
 *          不是,实测下来,如果方法的形参类型是int,那么实参可以是: byte short char int
 *
 *       也就是说,在方法调用时,实参数据类型和形参数据类型是存在自动类型转换的
 *       如果实参的数据类型可以自动类型转换到形参数据类型,那么这个实参就是允许传入的!
 *
 *       如果方法的形参数据类是double,那么实参可以传入哪些类型?
 *       除了boolean类型,其他基本数据类型都可以,因为都可以自动类型转换
 *
 * 以上搞明白后,我们来举一反三:
 *      1.基本数据类型可以自动类型转换,同样的引用数据类型也可以自动类型转换,那么引用数据类型具有这种特点吗?
 *          是具有的,关于引用数据类型的自动类型转换,等到面向对象再学.
 *
 *      2.既然实参和形参数据类型存在自动类型转换,那么方法的返回值和它的返回值类型呢?有没有自动类型转换呢?
 *          也是可以的,在写方法的返回值时,如果返回值的具体类型和方法的返回值类型可以构成自动类型转换,是允许的
 *
 *
 * @since 15:05
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        test(10);
        byte a = 10;
        test(a);
        short b = 10;
        test(b);
        char c = 'a';
        test(c);
        test2(0.1);
        test2(0.1F);
        test2(1);
        test2(1L);

        // test(0.1);
        // test("123");
    }

    public static void test(int a) {
    }

    public static void test2(double a){}

    public static int test3(){
        byte a = 1;
        return a;
    }
}
